\pagestyle{empty}
\chapter{PLAN DE GARANTÍA DE CALIDAD}
\cleardoublepage
\pagestyle{fancyplain}
\section{Contexto del capítulo}
En este capítulo se muestra el plan de garantía de calidad donde se establecen los criterios y procedimientos que garantizan la calidad del producto software mediante la realización de determinadas actividades durante la ejecución del respectivo proceso de desarrollo.\newline

En lo que respecta al presente trabajo de tesis se entiende la calidad como el grado en que un sistema, componente o proceso cumple los requerimientos especificados y las necesidades o expectativas del cliente o usuario\cite{IEEE_610}.

\section{Plan de garantía de calidad}
\subsection{Propósito}
El propósito del presente plan de garantía de calidad es establecer los procedimientos para garantizar la calidad de los elementos de software al finalizar el proceso de desarrollo. Estos procedimientos se llevarán a cabo en cada una de las iteraciones del producto software \textit{EventNet}, esto en concreto permitirá asegurar la satisfacción de los requisitos presentes en el documento de especificación de requisitos, junto con permitir que el software sea mantenible.\newline

Este plan se dirige a los participantes de proyecto \textit{EventNet} y al responsable de calidad.

\subsection{Alcance}
Este plan se aplica al proyecto \eventnet y cubre los siguientes productos software:
\begin{enumerate}
 \item Documentos de planificación y gestión
 \item Documento de especificación de requisitos
 \item Documentos de análisis y diseño
 \item Documento de pruebas
 \item Implementación del sistema
\end{enumerate}

\subsection{Referencias}
IEEE 730-2003: IEEE Standar for software quality assurance plans\cite{IEEE_730}.


\subsection{Definiciones y acrónimos}
\subsubsection{Definiciones}
\begin{description}
 \item[Usuario] Toda persona que hace uso del sistema.
 \item[Release] Versión de un lanzamiento del producto software.
\end{description}

\subsubsection{Acrónimos}
\begin{description}
 \item[SVN] Sistema de control de versiones SubVersion.
 \item[SQAP] \textit{Software quality assuranse plan}.
 \item[YYYYMMDD] Formato de fecha año mes día.
\end{description}

\subsection{Gestión}
\subsubsection{Organización}
El grupo de garantía de calidad estará integrado por el equipo de desarrolladores, un representante del proyecto del cliente y el responsable de calidad.

\subsubsection{Responsabilidades y tareas}
\begin{longtable}{|p{5cm}|p{10cm}| r |}
\hline
\textbf{Actor} & \textbf{Responsabilidad} \\
\hline
Responsable de Calidad & Validar y verificar los productos en los hitos indicados. \newline Ser auditor de calidad.\\
\hline
Responsable del proyecto del cliente & Complementar el trabajo de desarrollo cooperando activamente en el proceso.\\
\hline
Equipo de desarrolladores & Desarrollar los productos. \newline Preparar, aplicar y documentar las pruebas. \newline Mantener los registros.\\
\hline
\caption{Responsabilidades y tareas}
\end{longtable}

Las tareas relacionadas a la calidad se deben realizar siguiendo la siguiente secuencia:
\begin{enumerate}
 \item Los desarrolladores realizan su trabajo técnico en completa cooperación con el responsable del proyecto del cliente.
 \item Una vez que el trabajo de desarrollo ha concluido se entregan los elementos de configuración al responsable del grupo de garantía de calidad.
 \item El responsable de garantía de calidad culminada la revisión devolverá los elementos de configuración con las observaciones - si las hubiese - para que los desarrolladores les corrijan inmediatamente.
 \item Una vez aprobado los elementos de configuración se cierra el proceso de desarrollo.
\end{enumerate}

\subsection{Documentación}
La documentación que se ha de crear durante el proceso de desarrollo deberá estar disponible para su revisión por parte de los involucrados según las responsabilidades determinadas. Los documentos a revisar en las actividades de aseguramiento de calidad son los siguientes:

\subsubsection{Gestión del proyecto}
\begin{itemize}
 \item Documento de descripción del sistema
 \item Documento de especificación de requisitos
 \item Documento de estimación y planificación
 \item El presente plan de garantía de calidad
 \item Plan de gestión de la configuración
\end{itemize}

\subsubsection{Documentación de análisis y diseño}
\begin{itemize}
 \item Diagrama de casos de uso
 \item Casos de uso
 \item Modelo conceptual
 \item Diagramas de interacción
 \item Diagrama de clases
 \item Modelo de datos
 \item Diccionario de datos
 \item Plan de pruebas
\end{itemize}

\subsubsection{Documentación de implementación}
\begin{itemize}
 \item Manual de usuario
 \item Manual de administración
 \item Manual de instalación
\end{itemize}

\subsection{Estándares y convenciones}
\subsubsection{Código fuente}
Se utilizará el siguiente estándar para los archivos fuente:
\begin{verbatim}
/*
 * This file is part of the EventNet project
 * (c) 2006-2007 Leo Barrientos - OpenSistemas lbarrientos@opensistemas.com
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

Encabezado de clase
/**
 * NOMBRE DE LA CLASE 
 * RESPONSABILIDAD DE LA CLASE Y CLASES COLABORADORAS
 * 
 * @package    NOMBRE DEL PAQUETE
 * @subpackage NOMBRE DEL SUBPAQUETE
 * @author     AUTOR
 * @version    NUMERO DE REVISION - FECHA - AUTOR
 */

Encabezado de operacion
  /**
   *
   *  DESCRIPCION DEL METODO
   *
   *
   * @param TIPO DE PARAMETRO - DESCRIPCIÓN
   * @return TIPO DE RETORNO - VALOR POR DEFECTO - DESCRIPCION
   * @throws METODO QUE SE EJECUTA AL FALLAR
   */
\end{verbatim}
\subsubsection{Entorno de desarrollo integrado}
Se utilizará el entorno de desarrollo integrado ECLIPSE para la escritura del código fuente, con el módulo de control de versiones SVN integrado.
\subsubsection{Frameworks}
Se utilizará un framework de desarrollo de software de los disponibles según la elección de tecnología. El proceso de selección estará a cargo del equipo de desarrollo.
\subsubsection{Persistencia}
Se utilizará una capa de persistencia de los disponibles según la elección de tecnología, esto permitirá abstraerse de medios relacionales como las bases de datos y acceder a dichos medios de manera transparente recuperando y persistiendo objetos.\newline

El proceso de selección estará a cargo del equipo de desarrollo.

\subsection{Revisiones y auditorías}
Para lograr la calidad del proyecto EventNet se realizarán las actividades de revisión de los siguientes artefactos:

\begin{longtable}{|p{4cm}|p{7cm}|p{4cm}| r |}
\hline
\textbf{Actividad} & \textbf{Artefacto} & \textbf{Comentarios} \\
\hline
Revisión de gestión del proyecto & Documento de estimación y planificación.\newline Plan de garantía de calidad.\newline Plan de gestión de la configuración & \\
\hline
Revisión de especificaciones de requisitos & Especificación de requisitos. \newline Descripción del sistema. \newline Casos de uso formato breve. & \\
\hline
Revisión del análisis y diseño & Diagramas de casos de uso.\newline Casos de uso formato breve.\newline Modelo conceptual. \newline Diagrama de clases. \newline Diagramas de interacción. \newline Modelo relacional de base de datos & \\
\hline
Revisión del plan de pruebas & Plan de pruebas & \\
\hline
Auditoría física & Todos los artefactos & Se realizará antes de la entrega parcial de cada iteración.\\
\hline
Auditoría funcional & Todos los artefactos & Se realizará antes de la entrega final del producto.\\
\hline
\caption{Artefactos a revisar en las actividades de garantía de calidad}
\end{longtable}

\subsection{Pruebas}

El conjunto de pruebas a realizar seguirá la siguiente secuencia:

\begin{itemize}
 \item Planificación de la prueba en el plan de pruebas.
 \item Diseño de pruebas.
 \item Determinación de los casos de prueba y especificación.
 \item Planificación de la ejecución de las pruebas.
 \item Ejecución e informe de pruebas.
\end{itemize}

Se utilizarán tres tipos de pruebas: Pruebas unitarias, pruebas de sistema y pruebas de integración. Estas pruebas serán ejecutadas siguiendo el plan de pruebas de cada iteración del proceso de desarrollo.

\subsubsection{Pruebas unitarias}
Es la prueba que se realizará por sobre cada clase del sistema, aislada del resto de  los otros artefactos y su objetivo es validar el cumplimiento de la responsabilidad de la clase.\newline

La ejecución de las pruebas se registrarán en un histórico de pruebas donde se muestren los resultados y si aplica, las correcciones necesarias.

Para las pruebas unitarias se utilizarán los métodos de caja negra por adivinación de errores y análisis de valores límite.
\subsubsection{Pruebas funcionales/integración}
Permitirá comprobara el funcionamiento del sistema a través de las interfaces de cada clase o módulo que han superado las pruebas unitarias; se utilizará el método de caja blanca por cobertura, suponiendo que los fallos encontrados en las pruebas unitarias han sido superados.

\subsubsection{Pruebas de sistema}
Se realizan con el objetivo de comprobar la implementación de los requisitos tanto funcionales como no funcionales y contarán con la participación activa de la contraparte cliente.

\subsubsection{Pruebas de aceptación}
Corresponde a las pruebas una vez instalado el sistema con el objeto de comprobar su correcto despliegue y que en dicho entorno final de producción el sistema funciona correctamente.

\subsection{Gestión de la configuración}
\subsubsection{Gestión de incidencias y actividades correctivas}
Para el presente proyecto los resultados de todas las revisiones y auditorías serán registradas en documentos, cuyo carácter correctivo y de sugerencias permitirá que el equipo de desarrollo complete el producto de manera satisfactoria.
\subsubsection{Mantenimiento de registros}
Se almacenarán todos los documentos de calidad en la linea base de pruebas que establece el plan de gestión de la configuración.

\section{Conclusiones del capítulo}
Este capítulo establece cual es el plan para garantizar la calidad del producto software en cuestión.\newline

Debido a que la calidad es un término ambiguo que da lugar a muchas interpretaciones, en este capítulo se hace incapié en que la calidad - y en específico el plan de garantía de calidad - es un asunto de realización de actividades dentro del proceso de desarrollo que sirven para otorgar el estatus de calidad, más que de un atributo propio de la implementación efectuada en código fuente. Por lo tanto se entiende la calidad como el grado en el cual cada actividad realizada en el proceso de desarrollo aporta para cumplir la especificación de requisitos y las necesidades/expectativas del cliente.\newline

En complemento al punto anterior el presente plan de calidad no señala únicamente la naturaleza que tendrán las pruebas a ejecutar sobre componentes software, si no que establece una organización que realiza determinadas actividades para garantizar la calidad del producto en cuestión; sean artefactos ejecutables en computadora y/o modelos impresos en papel por citar algunos.\newline

En el caso de las pruebas software se establecen los niveles de pruebas que se realizarán en cada iteración ejecutando el plan de pruebas correspondiente, esto que resulta clave con las pruebas unitarias y funcionales/integración ya que se utiliza la técnica del desarrollo guiado por pruebas tal como se define en el capítulo 3.\newline